#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::paintEvent(QPaintEvent *event)
{
	/*QPainter textPainter;
	textPainter.begin(this);
    textPainter.setFont(QFont("Times", 14, QFont::Bold));
    textPainter.drawText(QPoint(20, 30), "Testing");
	textPainter.end();

    QPainter linePainter;
	linePainter.begin(this);
    linePainter.drawLine(QPoint(50, 60), QPoint(100, 100));
	linePainter.end();

    QPainter rectPainter;
	rectPainter.begin(this);
    rectPainter.setBrush(Qt::BDiagPattern);
    rectPainter.drawRect(QRect(40, 120, 80, 30));
	rectPainter.end();

    QPen ellipsePen;
    ellipsePen.setColor(Qt::red);
    ellipsePen.setStyle(Qt::DashDotLine);

    QPainter ellipsePainter;
	ellipsePainter.begin(this);
    ellipsePainter.setPen(ellipsePen);
    ellipsePainter.drawEllipse(QPoint(80, 200), 50, 20);
	ellipsePainter.end();

    QPainterPath rectPath;
    rectPath.addRect(QRect(150, 20, 100, 50));

    QPainter pathPainter;
	pathPainter.begin(this);
    pathPainter.setPen(QPen(Qt::red, 1, Qt::DashDotLine, Qt::FlatCap, Qt::MiterJoin));
    pathPainter.setBrush(Qt::yellow);
    pathPainter.drawPath(rectPath);
	pathPainter.end();

    QPainterPath ellipsePath;
    ellipsePath.addEllipse(QPoint(200, 120), 50, 20);

    QPainter ellipsePathPainter;
	ellipsePathPainter.begin(this);
    ellipsePathPainter.setPen(QPen(QColor(79, 106, 25), 5, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin));
    ellipsePathPainter.setBrush(QColor(122, 163, 39));
    ellipsePathPainter.drawPath(ellipsePath);
	ellipsePathPainter.end();

    QImage image;
	image.load("tux.png");

    QPainter imagePainter(this);
	imagePainter.begin(this);
	imagePainter.drawImage(QPoint(100, 150), image);
	imagePainter.end();*/


	paintAll();
}

void MainWindow::paintAll(QSvgGenerator *generator)
{
    QPainter painter;

    if (generator)
        painter.begin(generator);
    else
        painter.begin(this);

	painter.setFont(QFont("Times", 14, QFont::Bold));
	painter.drawText(QPoint(20, 30), "Testing");

	painter.drawLine(QPoint(50, 60), QPoint(100, 100));

	painter.setBrush(Qt::BDiagPattern);
	painter.drawRect(QRect(40, 120, 80, 30));

	QPen ellipsePen;
	ellipsePen.setColor(Qt::red);
	ellipsePen.setStyle(Qt::DashDotLine);

	painter.setPen(ellipsePen);
	painter.drawEllipse(QPoint(80, 200), 50, 20);

	QPainterPath rectPath;
	rectPath.addRect(QRect(150, 20, 100, 50));

	painter.setPen(QPen(Qt::red, 1, Qt::DashDotLine, Qt::FlatCap, Qt::MiterJoin));
	painter.setBrush(Qt::yellow);
	painter.drawPath(rectPath);

	QPainterPath ellipsePath;
	ellipsePath.addEllipse(QPoint(200, 120), 50, 20);

	painter.setPen(QPen(QColor(79, 106, 25), 5, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin));
	painter.setBrush(QColor(122, 163, 39));
	painter.drawPath(ellipsePath);

	QImage image;
	image.load("tux.png");

	painter.drawImage(QPoint(100, 150), image);

    painter.end();
}

void MainWindow::on_actionSave_as_SVG_triggered()
{
    QString filePath = QFileDialog::getSaveFileName(this, "Save SVG", "", "SVG files (*.svg)");

    if (filePath == "")
        return;

    QSvgGenerator generator;
    generator.setFileName(filePath);
    generator.setSize(QSize(this->width(), this->height()));
    generator.setViewBox(QRect(0, 0, this->width(), this->height()));
    generator.setTitle("SVG Example");
    generator.setDescription("This SVG file is generated by Qt.");

    paintAll(&generator);
}
